#ifndef RINGFIFO_H_
#define RINGFIFO_H_

#include <stddef.h> // 为了使用size_t类型

// 帧类型定义 - 与原始RTSP代码的区别：
// 保持了相同的枚举定义，但在live555版本中主要使用I帧标识
typedef enum{
    FRAME_TYPE_UNKNOW = 0,
    FRAME_TYPE_I = 1,
    FRAME_TYPE_P = 2,
    FRAME_TYPE_B = 3
}H264_FRAME_TYPE;

// 环形缓冲区结构体定义
typedef struct {
    unsigned char *buffer;
    int frame_type;
    int size;
}ringbuf;

// 环形缓冲区基本操作函数
int addring(int i);              // 计算环形缓冲区的下一个索引位置
int ringget(ringbuf *getinfo);    // 从环形缓冲区获取数据
void ringput(unsigned char *buffer,int size,int encode_type); // 向环形缓冲区写入数据
void ringfree();                  // 释放环形缓冲区内存
void ringmalloc(int size);        // 初始化环形缓冲区
void ringreset();                 // 重置环形缓冲区索引

// H.264数据处理函数声明
int HisiPutH264DataToBuffer(void *stream); // 将编码器H.264数据放入缓冲区
int putH264DataToBuffer(unsigned char* data, size_t length); // 通用H.264数据放入缓冲区函数

// 检查环形缓冲区是否已初始化
int ringfifo_is_initialized(void); // 返回1表示已初始化，0表示未初始化

// 与原始RTSP代码的区别：移除了UpdateSps、UpdatePps和UpdateSpsOrPps相关函数声明

#endif // RINGFIFO_H_